// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'

// 引入自定义样式
import './style/index.scss'
// 引入自定义扩充验证器
import './validator'
// 加载自己的svg图标
import './icons'
// 加载自定义指令
import './directive'
// 加载扩充插件
import './Plugins'

// 全局引入element-ui组件库，因为本项目使用的是element作为基础组件库全局使用
import ElementUI from 'element-ui'
// 由于element自带验证器局限性大，不能满足一些特殊情况，单独引入验证模块
import VeeValidate from 'vee-validate'
// 图片懒加载
import VueLazyload from 'vue-lazyload'
// 图片放大预览
import Viewer from 'v-viewer'
import 'viewerjs/dist/viewer.css'

Vue.config.productionTip = false

Vue.use(ElementUI)
Vue.use(VeeValidate)
// 图片懒加载的默认图片像素要小，图片大小越小越好
Vue.use(VueLazyload, {
  preLoad: 1.3,
  error: 'static/img-load-fail.png',
  loading: 'static/mohutupian.png',
  attempt: 1,
  // the default is ['scroll', 'wheel', 'mousewheel', 'resize', 'animationend', 'transitionend']
  listenEvents: [ 'scroll' ]
})
Vue.use(Viewer)

// 导航守卫，可以做一下刷新后的处理
router.beforeEach(function (to, from, next) {
  if (to.path === '/') {
    next({
      replace: true,
      name: 'first-content'
    })
    return
  }
  next()
})

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
})
